package br.com.tarcilahelpdesk.persistencia;

import br.com.tarcilahelpdesk.enums.EnumEstadoChamado;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;

/**
 * Classe de entidade do hibernate.
 * @author vinicius.fonseca
 */
@Entity
public class Chamado extends ObjetoPersistente
{

    private String numero;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataAbertura;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataEncerramento;
    @Enumerated(EnumType.ORDINAL)
    private EnumEstadoChamado estado;
    @Lob
    private String historico;
    private String nomeSolicitante;
    private String nomeServico;
    @OneToMany(mappedBy = "chamado", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<AtributoValor> atributosServico;
    @OneToMany(mappedBy = "chamado", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<AtributoValor> atributosSolicitante;
    @OneToMany(mappedBy = "chamado", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<AtributoValor> atividades;

    public EnumEstadoChamado getEstado()
    {
        return estado;
    }

    public void setEstado(EnumEstadoChamado estado)
    {
        this.estado = estado;
    }

    public String getNomeServico()
    {
        return nomeServico;
    }

    public void setNomeServico(String nomeServico)
    {
        this.nomeServico = nomeServico;
    }

    public String getNomeSolicitante()
    {
        return nomeSolicitante;
    }

    public void setNomeSolicitante(String nomeSolicitante)
    {
        this.nomeSolicitante = nomeSolicitante;
    }

    public Date getDataAbertura()
    {
        return dataAbertura;
    }

    public void setDataAbertura(Date dataAbertura)
    {
        this.dataAbertura = dataAbertura;
    }

    public Date getDataEncerramento()
    {
        return dataEncerramento;
    }

    public void setDataEncerramento(Date dataEncerramento)
    {
        this.dataEncerramento = dataEncerramento;
    }

    public String getHistorico()
    {
        return historico;
    }

    public void setHistorico(String historico)
    {
        this.historico = historico;
    }

    public String getNumero()
    {
        return numero;
    }

    public void setNumero(String numero)
    {
        this.numero = numero;
    }

    public List<AtributoValor> getAtributosSolicitante()
    {
        return atributosSolicitante;
    }

    public void setAtributosSolicitante(List<AtributoValor> atributosSolicitante)
    {
        this.atributosSolicitante = atributosSolicitante;
    }

    public List<AtributoValor> getAtividades()
    {
        return atividades;
    }

    public void setAtividades(List<AtributoValor> atividades)
    {
        this.atividades = atividades;
    }

    public List<AtributoValor> getAtributosServico()
    {
        return atributosServico;
    }

    public void setAtributosServico(List<AtributoValor> atributosServico)
    {
        this.atributosServico = atributosServico;
    }
}
